package zeichnen;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;

public class MainFrame {

	private static JFrame f = new JFrame("Zeichnen-Programm");
	private JPanel cp;
	private PaintPanel panel = new PaintPanel();
	
	private JMenuItem laden = new JMenuItem("Bild laden");
	private JMenuItem erstellen = new JMenuItem("HTML erstellen");
	private JMenuItem beenden = new JMenuItem("Beenden");
	
	private JMenuItem zFarbe = new JMenuItem("Zeichenfarbe");
	
	private ButtonGroup gruppe1 = new ButtonGroup();
	private JMenu polygon = new JMenu("Polygon");
	private JRadioButtonMenuItem rechteck = new JRadioButtonMenuItem("Rechteck");
	private JRadioButtonMenuItem kreis = new JRadioButtonMenuItem("Kreis");
	
	private ButtonGroup gruppePoly = new ButtonGroup();
	private JRadioButtonMenuItem poly5 = new JRadioButtonMenuItem("5-kant Polygon");
	private JRadioButtonMenuItem poly6 = new JRadioButtonMenuItem("6-kant Polygon");
	private JRadioButtonMenuItem poly7 = new JRadioButtonMenuItem("7-kant Polygon");
	private JRadioButtonMenuItem poly8 = new JRadioButtonMenuItem("8-kant Polygon");
	private JRadioButtonMenuItem poly9 = new JRadioButtonMenuItem("9-kant Polygon");
	private JRadioButtonMenuItem poly10 = new JRadioButtonMenuItem("10-kant Polygon");
	
	private JMenuItem info = new JMenuItem("Info");
	
	//******** Konstuktor
	public MainFrame(int spalten,int zeilen){
		hautfenster();
		f.setVisible(true);
		f.setSize(spalten, zeilen);
	}
	
	//******** Fenster
	private void hautfenster() {
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		//** Menu
		menuLeiste();
		gruppe1.add(poly5);
		gruppe1.add(poly6);
		gruppe1.add(poly7);
		gruppe1.add(poly8);
		gruppe1.add(poly9);
		gruppe1.add(poly10);
		gruppe1.add(rechteck);
		gruppe1.add(kreis);
		//**Panel
		cp = (JPanel) f.getContentPane();
		cp.setLayout(new BorderLayout());
		cp.add(panel, BorderLayout.CENTER);
	}

	private void menuLeiste() {
		JMenuBar menu = new JMenuBar();
		
		JMenu datei = new JMenu("Datei");
		JMenu einstellungen = new JMenu("Einstellung");
		JMenu zeichnen = new JMenu("Zeichnen");
		JMenu hilfe = new JMenu("Hilfe");
		
		menu.add(datei);
		menu.add(einstellungen);
		menu.add(zeichnen);
		menu.add(hilfe);
		
		zeichnen.add(polygon);
		polygon.add(poly5);
		polygon.add(poly6);
		polygon.add(poly7);
		polygon.add(poly8);
		polygon.add(poly9);
		polygon.add(poly10);
		
		
		//** MenuItems
		laden.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktOeffnen(e);
			}

		});
		datei.add(laden);
		erstellen.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktSpeichern(e);
			}

		});
		datei.add(erstellen);
		datei.addSeparator();
		beenden.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktBeenden(e);
			}

		});
		datei.add(beenden);
		
		einstellungen.add(zFarbe);
		zFarbe.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZFarbe(e);
			}

		});
		
		poly5.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e, poly5);
			}

		});	 
		poly6.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e, poly6);
			}

		});	
		poly7.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e, poly7);
			}

		});	
		poly8.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e, poly8);
			}

		});	 
		poly9.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e, poly9);
			}

		});	
		poly10.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e, poly10);
			}

		});	
		
		
		rechteck.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e,rechteck);
			}

		});
		zeichnen.add(rechteck);
		
		kreis.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktZeichne(e, kreis);
			}

		});
		zeichnen.add(kreis);
		
		info.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fktInfo(e);
			}

		});
		hilfe.add(info);
		
		f.setJMenuBar(menu);
		
		
	}


	//******* Menu-Funktionen
	protected void fktZeichne(ActionEvent e, JRadioButtonMenuItem zeichnen) {
		if(zeichnen.equals(poly5) ){
			System.out.println("Poly5");
			panel.setMode(0,5);
		}
		if(zeichnen.equals(poly6) ){
			System.out.println("Poly6");
			panel.setMode(0,6);
		}
		if(zeichnen.equals(poly7) ){
			System.out.println("Poly7");
			panel.setMode(0,7);
		}
		if(zeichnen.equals(poly8) ){
			System.out.println("Poly8");
			panel.setMode(0,8);
		}
		if(zeichnen.equals(poly9) ){
			System.out.println("Poly9");
			panel.setMode(0,9);
		}
		if(zeichnen.equals(poly10) ){
			System.out.println("Poly10");
			panel.setMode(0,10);
		}
		if(zeichnen.equals(rechteck)){
			System.out.println("Rechteck");
			panel.setMode(2);
		}
		if(zeichnen.equals(kreis)){
			System.out.println("Kreis");
			panel.setMode(3);
		}
	}
	

	protected void fktBeenden(ActionEvent e) {
		int beenden = 0;
		beenden = JOptionPane.showOptionDialog(null, "Soll das Programm wirklich geschlossen werden?", "Schliessen", 0, 0, null, null, e);
		if(beenden == JOptionPane.OK_OPTION){
			System.exit(0);
		}
	}

	protected void fktSpeichern(ActionEvent e) {
		JOptionPane.showMessageDialog (null, "Funktion noch nicht implementiert!", "Bild laden", JOptionPane.ERROR_MESSAGE);
	}

	protected void fktOeffnen(ActionEvent e) {
		JOptionPane.showMessageDialog (null, "Funktion noch nicht implementiert!", "HTML erstellen", JOptionPane.ERROR_MESSAGE);
	}

	protected void fktInfo(ActionEvent e) {
		JOptionPane.showMessageDialog (null, "Implementiert von Martin Lippert und Larissa Kornowski!", "Info", JOptionPane.ERROR_MESSAGE);
	}
	
	protected void fktZFarbe(ActionEvent e) {
		Color farbe = JColorChooser.showDialog(null,"Farbe waehlen", Color.white);
		panel.setZColor(farbe);
	}
}